<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
// 快速排序思想：从数组中选定中间基数，将剩下的成员依次与基数作比较，定义左右数组，小于基数放在左数组，大于基数放在右数组
// 左右数组递归处理，成员小于一直接return，最后拼接数组
let arr = [58, 15, 98, 64, 23, 44, 2]
function quickSort(arr) {
    // 判断参数是不是数组，不是数组直接return
    if(!arr instanceof Array) {
        return;
    }
    // 成员长度小于等于一直接return当前数组
    if(arr.length <= 1) {
        return arr;
    }
    // 获取基数索引
    let index = Math.floor(arr.length / 2);
    // 截取该成员
    let cardinal = arr.splice(index, 1);
    // 定义左右空数组
    let leftArr = [];
    let rightArr = [];
    // 遍历数组
    for(let i = 0; i < arr.length; i++) {
        // 小于基数放入左数组
        if(arr[i] < cardinal) {
            leftArr.push(arr[i]);
        }else {
            // 大于基数放入右数组
            rightArr.push(arr[i]);
        }
    }
    // 递归处理，拼接数组
    return quickSort(leftArr).concat(cardinal, quickSort(rightArr))
}
console.log(quickSort(arr));

    </script>
</body>
</html>